/*
 * BuscarProduto.java
 *
 * Created on 02/06/2009, 09:17:00
 * Copyright Administrador las
 */
package Soligee.view;

import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeAlterarImplements;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlCommandLink;
import com.icesoft.faces.component.ext.HtmlDataTable;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;
import com.icesoft.faces.component.ext.HtmlPanelGroup;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectedData;
import com.icesoft.faces.component.jsfcl.data.DefaultSelectionItems;
import com.icesoft.faces.component.jsfcl.data.DefaultTableDataModel;
import com.icesoft.faces.component.jsfcl.data.PopupBean;
import com.icesoft.faces.component.jsfcl.data.SelectInputDateBean;
import com.icesoft.faces.component.panelpopup.PanelPopup;
import com.icesoft.faces.component.paneltabset.PanelTabSet;
import com.icesoft.faces.component.selectinputtext.SelectInputText;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeBuscarImplements;
import Soligee.controller.facade.sessionFacadeImplements.SessionFacadeRemoverImplements;
import Soligee.decorador.DecoradorInicializaCombos;
import Soligee.model.vo.cadastros.CategoriaVO;
import java.util.List;
import javax.faces.FacesException;
import javax.faces.event.ValueChangeEvent;
import Soligee.decorador.PaginacaoListaDezEmDez;
import Soligee.decorador.ValidaCamposObrigatorios;
import Soligee.model.vo.cadastros.ProdutoVO;
import Soligee.model.vo.cadastros.SubcategoriaVO;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;


public class BuscarProduto extends AbstractPageBean {
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    private int __placeholder;
    private DefaultSelectionItems item; //item do autocomplete
    private List<ProdutoVO> lista_de_produtos; //lista para preencher a tabela
    private static ProdutoVO produto;
    private boolean controle;
    private int controlaSaida =0;
    private int controlaPopUp = 0;
    private static PaginacaoListaDezEmDez paginacaoBusca;   

    public static PaginacaoListaDezEmDez getPaginacaoBusca() {
        return paginacaoBusca;
    }

    public static void setPaginacaoBusca(PaginacaoListaDezEmDez paginacaoBusca) {
        BuscarProduto.paginacaoBusca = paginacaoBusca;
    }

    public DefaultSelectionItems getItem() {
        return item;
    }

    public void setItem(DefaultSelectionItems item) {
        this.item = item;
    }

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
    }
    private SelectInputDateBean selectInputDate1Bean = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDate1Bean() {
        return selectInputDate1Bean;
    }

    public void setSelectInputDate1Bean(SelectInputDateBean sidb) {
        this.selectInputDate1Bean = sidb;
    }
    private SelectInputDateBean selectInputDateBean2 = new SelectInputDateBean();

    public SelectInputDateBean getSelectInputDateBean2() {
        return selectInputDateBean2;
    }

    public void setSelectInputDateBean2(SelectInputDateBean sidb) {
        this.selectInputDateBean2 = sidb;
    }
    private DefaultTableDataModel dataTable1Model = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model() {
        return dataTable1Model;
    }

    public void setDataTable1Model(DefaultTableDataModel dtdm) {
        this.dataTable1Model = dtdm;
    }
    private DefaultSelectedData selectOneMenu1Bean = new DefaultSelectedData();

    public DefaultSelectedData getSelectOneMenu1Bean() {
        return selectOneMenu1Bean;
    }

    public void setSelectOneMenu1Bean(DefaultSelectedData dsd) {
        this.selectOneMenu1Bean = dsd;
    }
    private DefaultTableDataModel dataTable1Model1 = new DefaultTableDataModel();

    public DefaultTableDataModel getDataTable1Model1() {
        return dataTable1Model1;
    }

    public void setDataTable1Model1(DefaultTableDataModel dtdm) {
        this.dataTable1Model1 = dtdm;
    }
    private HtmlDataTable tabelaResultadoBusca = new HtmlDataTable();

    public HtmlDataTable getTabelaResultadoBusca() {
        return tabelaResultadoBusca;
    }

    public void setTabelaResultadoBusca(HtmlDataTable hdt) {
        this.tabelaResultadoBusca = hdt;
    }
    private HtmlSelectOneMenu tipoBusca = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getTipoBusca() {
        return tipoBusca;
    }

    public void setTipoBusca(HtmlSelectOneMenu hsom) {
        this.tipoBusca = hsom;
    }
    private SelectInputText campoABuscar = new SelectInputText();

    public SelectInputText getCampoABuscar() {
        return campoABuscar;
    }

    public void setCampoABuscar(SelectInputText sit) {
        this.campoABuscar = sit;
    }
    private HtmlCommandButton btn_buscar = new HtmlCommandButton();

    public HtmlCommandButton getBtn_buscar() {
        return btn_buscar;
    }

    public void setBtn_buscar(HtmlCommandButton hcb) {
        this.btn_buscar = hcb;
    }
    private HtmlCommandButton btn_editar1 = new HtmlCommandButton();

    public HtmlCommandButton getBtn_editar1() {
        return btn_editar1;
    }

    public void setBtn_editar1(HtmlCommandButton hcb) {
        this.btn_editar1 = hcb;
    }
    private HtmlCommandButton btn_excluir1 = new HtmlCommandButton();

    public HtmlCommandButton getBtn_excluir1() {
        return btn_excluir1;
    }

    public void setBtn_excluir1(HtmlCommandButton hcb) {
        this.btn_excluir1 = hcb;
    }
    private HtmlInputText campoDescricaoProduto = new HtmlInputText();

    public HtmlInputText getCampoDescricaoProduto() {
        return campoDescricaoProduto;
    }

    public void setCampoDescricaoProduto(HtmlInputText hit) {
        this.campoDescricaoProduto = hit;
    }
    private HtmlCommandLink linkCancelar = new HtmlCommandLink();

    public HtmlCommandLink getLinkCancelar() {
        return linkCancelar;
    }

    public void setLinkCancelar(HtmlCommandLink hcl) {
        this.linkCancelar = hcl;
    }
    private HtmlInputText campoUnidade = new HtmlInputText();

    public HtmlInputText getCampoUnidade() {
        return campoUnidade;
    }

    public void setCampoUnidade(HtmlInputText hit) {
        this.campoUnidade = hit;
    }
    private HtmlInputText campoPrecoCusto = new HtmlInputText();

    public HtmlInputText getCampoPrecoCusto() {
        return campoPrecoCusto;
    }

    public void setCampoPrecoCusto(HtmlInputText hit) {
        this.campoPrecoCusto = hit;
    }
    private HtmlInputText campoPrecoVenda = new HtmlInputText();

    public HtmlInputText getCampoPrecoVenda() {
        return campoPrecoVenda;
    }

    public void setCampoPrecoVenda(HtmlInputText hit) {
        this.campoPrecoVenda = hit;
    }
    private HtmlInputText campoQuantidadeMinima = new HtmlInputText();

    public HtmlInputText getCampoQuantidadeMinima() {
        return campoQuantidadeMinima;
    }

    public void setCampoQuantidadeMinima(HtmlInputText hit) {
        this.campoQuantidadeMinima = hit;
    }
    private HtmlInputText campoQuantidadeEstoque = new HtmlInputText();

    public HtmlInputText getCampoQuantidadeEstoque() {
        return campoQuantidadeEstoque;
    }

    public void setCampoQuantidadeEstoque(HtmlInputText hit) {
        this.campoQuantidadeEstoque = hit;
    }

    //Botoes OpcaoBusca
    private DefaultSelectedData botaoSelecionadoTipoBusca = new DefaultSelectedData();

    public DefaultSelectedData getBotaoSelecionadoTipoBusca() {
        return botaoSelecionadoTipoBusca;
    }

    public void setBotaoSelecionadoTipoBusca(DefaultSelectedData dsd) {
        this.botaoSelecionadoTipoBusca = dsd;
    }
    private DefaultSelectionItems botaoTipoBusca = new DefaultSelectionItems();

    public DefaultSelectionItems getBotaoTipoBusca() {
        return botaoTipoBusca;
    }

    public void setBotaoTipoBusca(DefaultSelectionItems dsi) {
        this.botaoTipoBusca = dsi;
    }
    private HtmlCommandButton btnBuscar = new HtmlCommandButton();

    public HtmlCommandButton getBtnBuscar() {
        return btnBuscar;
    }

    public void setBtnBuscar(HtmlCommandButton hcb) {
        this.btnBuscar = hcb;
    }
    private HtmlCommandButton btnAlterar = new HtmlCommandButton();

    public HtmlCommandButton getBtnAlterar() {
        return btnAlterar;
    }

    public void setBtnAlterar(HtmlCommandButton hcb) {
        this.btnAlterar = hcb;
    }
    private HtmlPanelGroup painelPrincipal = new HtmlPanelGroup();

    public HtmlPanelGroup getPainelPrincipal() {
        return painelPrincipal;
    }

    public void setPainelPrincipal(HtmlPanelGroup hpg) {
        this.painelPrincipal = hpg;
    }
    private PopupBean panelPopup1Bean = new PopupBean();

    public PopupBean getPanelPopup1Bean() {
        return panelPopup1Bean;
    }

    public void setPanelPopup1Bean(PopupBean pb) {
        this.panelPopup1Bean = pb;
    }
    private PanelPopup panelPopup = new PanelPopup();

    public PanelPopup getPanelPopup() {
        return panelPopup;
    }

    public void setPanelPopup(PanelPopup pp) {
        this.panelPopup = pp;
    }
    private HtmlCommandButton btnPopUp1 = new HtmlCommandButton();

    public HtmlCommandButton getBtnPopUp1() {
        return btnPopUp1;
    }

    public void setBtnPopUp1(HtmlCommandButton hcb) {
        this.btnPopUp1 = hcb;
    }
    private HtmlCommandButton btnPopUp2 = new HtmlCommandButton();

    public HtmlCommandButton getBtnPopUp2() {
        return btnPopUp2;
    }

    public void setBtnPopUp2(HtmlCommandButton hcb) {
        this.btnPopUp2 = hcb;
    }
    private HtmlOutputText textoPopUp = new HtmlOutputText();

    public HtmlOutputText getTextoPopUp() {
        return textoPopUp;
    }

    public void setTextoPopUp(HtmlOutputText hot) {
        this.textoPopUp = hot;
    }
    private HtmlInputText campoPercentualVenda = new HtmlInputText();

    public HtmlInputText getCampoPercentualVenda() {
        return campoPercentualVenda;
    }

    public void setCampoPercentualVenda(HtmlInputText hit) {
        this.campoPercentualVenda = hit;
    }
    private DefaultSelectedData defaultSelectedData1 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData1() {
        return defaultSelectedData1;
    }

    public void setDefaultSelectedData1(DefaultSelectedData dsd) {
        this.defaultSelectedData1 = dsd;
    }
    private DefaultSelectionItems selectOneMenu1DefaultItems1 = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems1() {
        return selectOneMenu1DefaultItems1;
    }

    public void setSelectOneMenu1DefaultItems1(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems1 = dsi;
    }
    private DefaultSelectedData defaultSelectedData2 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData2() {
        return defaultSelectedData2;
    }

    public void setDefaultSelectedData2(DefaultSelectedData dsd) {
        this.defaultSelectedData2 = dsd;
    }
    private DefaultSelectedData defaultSelectedData3 = new DefaultSelectedData();

    public DefaultSelectedData getDefaultSelectedData3() {
        return defaultSelectedData3;
    }

    public void setDefaultSelectedData3(DefaultSelectedData dsd) {
        this.defaultSelectedData3 = dsd;
    }
    private DefaultSelectionItems selectOneMenu1DefaultItems2 = new DefaultSelectionItems();

    public DefaultSelectionItems getSelectOneMenu1DefaultItems2() {
        return selectOneMenu1DefaultItems2;
    }

    public void setSelectOneMenu1DefaultItems2(DefaultSelectionItems dsi) {
        this.selectOneMenu1DefaultItems2 = dsi;
    }
    private HtmlSelectOneMenu campoSubcategoria = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getCampoSubcategoria() {
        return campoSubcategoria;
    }

    public void setCampoSubcategoria(HtmlSelectOneMenu hsom) {
        this.campoSubcategoria = hsom;
    }//---------------------------------------------------
    private DefaultSelectedData botaoSelecionadoOpcaoSubCategoria = new DefaultSelectedData();

    public DefaultSelectedData getBotaoSelecionadoOpcaoSubCategoria() {
        return botaoSelecionadoOpcaoSubCategoria;
    }

    public void setBotaoSelecionadoOpcaoSubCategoria(DefaultSelectedData dsd) {
        this.botaoSelecionadoOpcaoSubCategoria = dsd;
    }
    private DefaultSelectionItems botaoOpcaoSubCategoria = new DefaultSelectionItems();

    public DefaultSelectionItems getBotaoOpcaoSubCategoria() {
        return botaoOpcaoSubCategoria;
    }

    public void setBotaoOpcaoSubCategoria(DefaultSelectionItems dsi) {
        this.botaoOpcaoSubCategoria = dsi;
    }
    private HtmlSelectOneMenu opcaoSubCategoria = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getOpcaoSubCategoria() {
        return opcaoSubCategoria;
    }

    public void setOpcaoSubCategoria(HtmlSelectOneMenu hsom) {
        this.opcaoSubCategoria = hsom;
    }
    private javax.faces.component.html.HtmlCommandLink linkAction1 = new javax.faces.component.html.HtmlCommandLink();

    public javax.faces.component.html.HtmlCommandLink getLinkAction1() {
        return linkAction1;
    }

    public void setLinkAction1(javax.faces.component.html.HtmlCommandLink hcl) {
        this.linkAction1 = hcl;
    }//----------------------------------------------------------------------
    // Fim Botoes OpcaoBusca
    private DefaultSelectedData botaoSelecionadoOpcaoMarca = new DefaultSelectedData();

    public DefaultSelectedData getBotaoSelecionadoOpcaoMarca() {
        return botaoSelecionadoOpcaoMarca;
    }

    public void setBotaoSelecionadoOpcaoMarca(DefaultSelectedData dsd) {
        this.botaoSelecionadoOpcaoMarca = dsd;
    }
    private DefaultSelectionItems botaoOpcaoMarca = new DefaultSelectionItems();

    public DefaultSelectionItems getBotaoOpcaoMarca() {
        return botaoOpcaoMarca;
    }

    public void setBotaoOpcaoMarca(DefaultSelectionItems dsi) {
        this.botaoOpcaoMarca = dsi;
    }
    private HtmlSelectOneMenu opcaoMarca = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getOpcaoMarca() {
        return opcaoMarca;
    }

    public void setOpcaoMarca(HtmlSelectOneMenu hsom) {
        this.opcaoMarca = hsom;
    }
    private DefaultSelectedData botaoSelecionadoOpcaoCategoria = new DefaultSelectedData();

    public DefaultSelectedData getBotaoSelecionadoOpcaoCategoria() {
        return botaoSelecionadoOpcaoCategoria;
    }

    public void setBotaoSelecionadoOpcaoCategoria(DefaultSelectedData dsd) {
        this.botaoSelecionadoOpcaoCategoria = dsd;
    }
    private DefaultSelectionItems botaoOpcaoCategoria = new DefaultSelectionItems();

    public DefaultSelectionItems getBotaoOpcaoCategoria() {
        return botaoOpcaoCategoria;
    }

    public void setBotaoOpcaoCategoria(DefaultSelectionItems dsi) {
        this.botaoOpcaoCategoria = dsi;
    }
    private HtmlSelectOneMenu opcaoCategoria = new HtmlSelectOneMenu();

    public HtmlSelectOneMenu getOpcaoCategoria() {
        return opcaoCategoria;
    }

    public void setOpcaoCategoria(HtmlSelectOneMenu hsom) {
        this.opcaoCategoria = hsom;
    }
    private PanelTabSet painelAbasProduto = new PanelTabSet();

    public PanelTabSet getPainelAbasProduto() {
        return painelAbasProduto;
    }

    public void setPainelAbasProduto(PanelTabSet pts) {
        this.painelAbasProduto = pts;
    }
    private HtmlCommandButton btn_excluir = new HtmlCommandButton();

    public HtmlCommandButton getBtn_excluir() {
        return btn_excluir;
    }

    public void setBtn_excluir(HtmlCommandButton hcb) {
        this.btn_excluir = hcb;
    }
    private HtmlCommandLink tx_opCancelarAba01 = new HtmlCommandLink();

    public HtmlCommandLink getTx_opCancelarAba01() {
        return tx_opCancelarAba01;
    }

    public void setTx_opCancelarAba01(HtmlCommandLink hcl) {
        this.tx_opCancelarAba01 = hcl;
    }
    private HtmlCommandLink tx_opCancelarAba02 = new HtmlCommandLink();

    public HtmlCommandLink getTx_opCancelarAba02() {
        return tx_opCancelarAba02;
    }

    public void setTx_opCancelarAba02(HtmlCommandLink hcl) {
        this.tx_opCancelarAba02 = hcl;
    }
    private HtmlInputText campoCodigo = new HtmlInputText();

    public HtmlInputText getCampoCodigo() {
        return campoCodigo;
    }

    public void setCampoCodigo(HtmlInputText hit) {
        this.campoCodigo = hit;
    }
    private HtmlCommandButton btnConfirmarAlteracao = new HtmlCommandButton();

    public HtmlCommandButton getBtnConfirmarAlteracao() {
        return btnConfirmarAlteracao;
    }

    public void setBtnConfirmarAlteracao(HtmlCommandButton hcb) {
        this.btnConfirmarAlteracao = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterFirstButton = new HtmlCommandButton();


    public HtmlCommandButton getTabelaResultadoBuscaFooterFirstButton() {
        return tabelaResultadoBuscaFooterFirstButton;
    }

    public void setTabelaResultadoBuscaFooterFirstButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterFirstButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterPreviousButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterPreviousButton() {
        return tabelaResultadoBuscaFooterPreviousButton;
    }

    public void setTabelaResultadoBuscaFooterPreviousButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterPreviousButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterNextButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterNextButton() {
        return tabelaResultadoBuscaFooterNextButton;
    }

    public void setTabelaResultadoBuscaFooterNextButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterNextButton = hcb;
    }
    private HtmlCommandButton tabelaResultadoBuscaFooterLastButton = new HtmlCommandButton();

    public HtmlCommandButton getTabelaResultadoBuscaFooterLastButton() {
        return tabelaResultadoBuscaFooterLastButton;
    }

    public void setTabelaResultadoBuscaFooterLastButton(HtmlCommandButton hcb) {
        this.tabelaResultadoBuscaFooterLastButton = hcb;
    }


    // </editor-fold>

    public BuscarProduto() {
    }

    @Override
    public void init() {
       super.init();
       FacesContext.getCurrentInstance().getExternalContext().getRequestMap().clear();
       this.inicializarCampos();
       this.limparCampos();
        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("BuscarProduto Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }

    // </editor-fold>
    }

    @Override
    public void preprocess() {
    }

    @Override
    public void prerender() {
    }

    @Override
    public void destroy() {
    }

    protected RequestBean1 getview$RequestBean1() {
        return (RequestBean1) getBean("view$RequestBean1");
    }

    protected SessionBean1 getview$SessionBean1() {
        return (SessionBean1) getBean("view$SessionBean1");
    }

    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    public String btn_editar1_action() {

        return null;
    }

    public List<ProdutoVO> getLista_de_produtos() {
        return lista_de_produtos;
    }

    public void setLista_de_produtos(List<ProdutoVO> lista_de_produtos) {
        this.lista_de_produtos = lista_de_produtos;
    }

   

    protected ApplicationBean1 getview$ApplicationBean1() {
        return (ApplicationBean1) getBean("view$ApplicationBean1");
    }

    protected CadastrarPessoaFisica getview$CadastrarPessoaFisica() {
        return (CadastrarPessoaFisica) getBean("view$CadastrarPessoaFisica");
    }

    protected BuscarPessoaFisica getview$BuscarPessoaFisica() {
        return (BuscarPessoaFisica) getBean("view$BuscarPessoaFisica");
    }

    protected CadastrarPedido getview$CadastrarPedido() {
        return (CadastrarPedido) getBean("view$CadastrarPedido");
    }

    protected Login getview$Login() {
        return (Login) getBean("view$Login");
    }

    protected BuscarRepresentante getview$BuscarRepresentante() {
        return (BuscarRepresentante) getBean("view$BuscarRepresentante");
    }

    protected BuscarVendedor getview$BuscarVendedor() {
        return (BuscarVendedor) getBean("view$BuscarVendedor");
    }

    protected CadastrarPessoaJuridica getview$CadastrarPessoaJuridica() {
        return (CadastrarPessoaJuridica) getBean("view$CadastrarPessoaJuridica");
    }

    protected BuscarNotaFiscal getview$BuscarNotaFiscal() {
        return (BuscarNotaFiscal) getBean("view$BuscarNotaFiscal");
    }

    protected CadastrarVendedor getview$CadastrarVendedor() {
        return (CadastrarVendedor) getBean("view$CadastrarVendedor");
    }

 

     //Ajax da Busca
    public void campoABuscar_processValueChange(ValueChangeEvent vce) {
        if(Integer.parseInt(tipoBusca.getValue().toString())==1)
            item = new SessionFacadeBuscarImplements().consultaSelectInputText(3,"descricao",campoABuscar.getValue().toString(),ProdutoVO.class);
       }



    //Botão Buscar - Action
    public String btnBuscar_action() {
        controlaPopUp = 1;
        SessionFacadeBuscarImplements facade_busca = new SessionFacadeBuscarImplements();
        switch (Integer.parseInt(tipoBusca.getValue().toString())) {
            case 1://busca por nome
                this.setLista_de_produtos(facade_busca.buscaPorNome("descricao","%"+campoABuscar.getValue().toString()+"%", ProdutoVO.class));
                dataTable1Model.setWrappedData(this.getLista_de_produtos());
                break;
            case 2://busca todos
                this.setLista_de_produtos(facade_busca.buscarTodos("codProduto", ProdutoVO.class));
                dataTable1Model.setWrappedData(this.getLista_de_produtos());
                break;
            default:
                System.out.println("Valor inválido do combobox para o tipo da consulta.");
                break;
        }//fim switch
         this.setPaginacaoBusca(new PaginacaoListaDezEmDez(this.getLista_de_produtos()));
        //defini o estado dos botoes da tabela de busca
        this.controlaPaginacao(this.getLista_de_produtos().size());
        
        btn_editar1.setDisabled(false);
        btn_excluir1.setDisabled(false);
        return null;
    }

    //Botão Alterar
    public String btnAlterar_action() {
        controlaPopUp = 2;
        this.setarCampos(false);
        btn_excluir.setRendered(false);
        btnAlterar.setRendered(false);
        btnConfirmarAlteracao.setRendered(true);       
        return null;
    }

    public void controlaPopup(boolean renderedPopup,String textoPoup,boolean btn1Rendered, boolean btn2Rendered,
            String textobtn1, String textobtn2){
        panelPopup.setRendered(renderedPopup);
        textoPopUp.setValue(textoPoup);
        btnPopUp1.setValue(textobtn1);
        btnPopUp1.setRendered(btn1Rendered);
        btnPopUp2.setRendered(btn2Rendered);
        btnPopUp2.setValue(textobtn2);
    }

    //Botão - Confirmar Alteração
    public String btnConfirmarAlteracao_action() {

        ValidaCamposObrigatorios valida = new ValidaCamposObrigatorios();

            valida.verificaCampoVazio(campoDescricaoProduto);
            valida.verificaCampoVazio(campoUnidade);
            valida.verificaCampoVazio(campoQuantidadeMinima);
            valida.verificaCampoVazio(campoQuantidadeEstoque);
            valida.verificaCampoVazio(campoPrecoVenda);

            if(valida.verificaCampoVazio(campoDescricaoProduto)||valida.verificaCampoVazio(campoUnidade)){
                painelAbasProduto.setSelectedIndex(0);
                controlaPopup(true,"Campos Obrigatório!",false,true,"","Ok");
            }
            else if(valida.verificaCampoVazio(campoQuantidadeMinima)||valida.verificaCampoVazio(campoQuantidadeEstoque)||valida.verificaCampoVazio(campoPrecoVenda)){
                painelAbasProduto.setSelectedIndex(1);
                controlaPopup(true,"Campos Obrigatório!",false,true,"","Ok");
                }

                else{
        controlaPopup(true,"Deseja alterar o produto selecionado",true,true,"Sim","Não");
        controle = true;
                }
        return null;
    }

    //Setar Campos
    public void setarCampos(boolean valor) {
        campoDescricaoProduto.setDisabled(valor);
        opcaoMarca.setDisabled(valor);
        opcaoCategoria.setDisabled(valor);
        opcaoSubCategoria.setDisabled(valor);
        campoUnidade.setDisabled(valor);
        campoPrecoCusto.setDisabled(valor);
        campoPrecoVenda.setDisabled(valor);
        campoCodigo.setDisabled(valor);        
        campoQuantidadeEstoque.setDisabled(valor);
        campoQuantidadeMinima.setDisabled(valor);
        campoPercentualVenda.setDisabled(valor);
    }  

    //Ação Botão PopUp
    public String btnPopUp1_action() {
        if(controlaSaida==1){
          return "voltar";
      }
        if (controlaPopUp == 1) {
            SessionFacadeRemoverImplements remover = new SessionFacadeRemoverImplements();
            try {
                if (remover.removerProduto(produto)) {
                    textoPopUp.setValue("Produto Excluído com Sucesso");
                    btnBuscar_action();
                    btnPopUp2.setValue("OK");
                    btnPopUp1.setRendered(false);
                    this.limparCampos();
                }
            } catch (Exception e) {
                textoPopUp.setValue("Erro ao Excluir Produto ");
                btnPopUp2.setValue("OK");
                btnPopUp1.setRendered(false);
            }
        } else {
             //Alterar
               if(controlaPopUp == 2){                    
                    SessionFacadeAlterarImplements facadeAlterar = new SessionFacadeAlterarImplements();
            try {
                if (facadeAlterar.alterarProduto(Integer.parseInt(opcaoSubCategoria.getValue().toString()),
                        Integer.parseInt(opcaoCategoria.getValue().toString()),
                        Integer.parseInt(opcaoMarca.getValue().toString()),
                        //parametros produto
                        Integer.parseInt(campoCodigo.getValue().toString()),
                        campoDescricaoProduto.getValue().toString(),
                        campoUnidade.getValue().toString(),
                        Double.parseDouble(campoQuantidadeEstoque.getValue().toString()),
                        Double.parseDouble(campoQuantidadeMinima.getValue().toString()),
                        Double.parseDouble(campoPrecoCusto.getValue().toString()),
                        Double.parseDouble(campoPrecoVenda.getValue().toString()),                        
                        Double.parseDouble(campoPercentualVenda.getValue().toString()))) {
                        controlaPopup(true, "Produto Alterado com Sucesso", false, true, "", "Ok");
                        textoPopUp.setValue("Produto Alterado com Sucesso");
                        btnBuscar_action();
                        btnConfirmarAlteracao.setRendered(false);
                        limparCampos();
                }
            } catch (Exception e) {
                        textoPopUp.setValue("Erro ao Alterar");
                        btnPopUp2.setValue("OK");
                        btnPopUp1.setRendered(false);
                        System.out.println("Erro:" + e.getMessage() + "caused by: " + e.getStackTrace());   }
             }           
        }
        return null;
    }

    public String btnPopUp2_action() {
        panelPopup.setRendered(false);
         return null;
    }

    //Inicializa Campos com Dados do Banco
    public DefaultSelectionItems InicializaCampos(int i) {
        SessionFacadeBuscarImplements facade_busca = new SessionFacadeBuscarImplements();
        DefaultSelectionItems itens = new DefaultSelectionItems();
        itens.clear();
        switch (i) {
            case 1://inicializa MarcaVO               
                this.setBotaoOpcaoMarca(new DecoradorInicializaCombos().inicializarCampoMarcaConsulta());
                break;

            case 2://inicializa CategoriaVO
                List<CategoriaVO> lista_categoria = facade_busca.buscarTodos("codCategoria", CategoriaVO.class);
                int k = 0;
                while (k < lista_categoria.size()) {
                    itens.add(new SelectItem(lista_categoria.get(k).getCodCategoria(), lista_categoria.get(k).getDescricao()));
                    k++;
                }
                this.setBotaoOpcaoCategoria(itens);
                break;

            case 3://Inicializa Sub-CategoriaVO

                List<SubcategoriaVO> lista_subCategoria = facade_busca.buscarTodos("codSubCategoria", SubcategoriaVO.class);
                int s = 0;
                while (s < lista_subCategoria.size()) {
                    itens.add(new SelectItem(lista_subCategoria.get(s).getCodSubCategoria(), lista_subCategoria.get(s).getDescricao()));
                    s++;
                }
                this.setBotaoOpcaoSubCategoria(itens);
                break;
        }
        return null;
    }

    //Setar Campos com Dados do Produto
    public String linkAction1_action() {
        this.produto = (ProdutoVO) tabelaResultadoBusca.getRowData(); //pega o objeto da linha selecionada
        campoDescricaoProduto.setValue(produto.getDescricao());
        campoUnidade.setValue(produto.getUnidade());
        campoPrecoCusto.setValue(produto.getPrecoCusto());
        campoPrecoVenda.setValue(produto.getPrecoVenda());
        opcaoMarca.setValue(new Integer(produto.getMarca().getCodMarca()));
        opcaoCategoria.setValue(new Integer(produto.getCategoria().getCodCategoria()));
        opcaoSubCategoria.setValue(new Integer(produto.getSubcategoria().getCodSubCategoria()));
        campoCodigo.setValue(produto.getCodProduto());
        campoQuantidadeMinima.setValue(produto.getQtdadeMinima());
        campoQuantidadeEstoque.setValue(produto.getQtdadeEstoque());        
        campoPercentualVenda.setValue(produto.getPercentVenda());
        painelAbasProduto.setSelectedIndex(0);
        btnAlterar.setRendered(true);
        btn_excluir.setRendered(true);
        btnConfirmarAlteracao.setRendered(false);
        this.setarCampos(true);

        ValidaCamposObrigatorios valida = new ValidaCamposObrigatorios();

            valida.verificaCampoVazio(campoDescricaoProduto);
            valida.verificaCampoVazio(campoUnidade);
            valida.verificaCampoVazio(campoQuantidadeMinima);
            valida.verificaCampoVazio(campoQuantidadeEstoque);
            valida.verificaCampoVazio(campoPrecoVenda);
        return null;
    }

    public String link_proximoPassoAba01_action() {
        painelAbasProduto.setSelectedIndex(1);
        return null;
    }

    //Botão Excluir
    public String btn_excluir_action() {
        controlaPopup(true,"Excluir o produto?",true,true,"Sim","Não");
        controle = false;
        return null;
    }

    //Limpa Campos
    public void limparCampos() {
        campoDescricaoProduto.resetValue();
        campoUnidade.resetValue();
        campoPrecoCusto.resetValue();
        campoPrecoVenda.setValue(0.0);
        campoCodigo.resetValue();        
        campoQuantidadeEstoque.resetValue();
        campoQuantidadeMinima.resetValue();
        campoPercentualVenda.resetValue();
        btn_editar1.setRendered(false);
        btn_excluir.setRendered(false);
        btnConfirmarAlteracao.setRendered(false);
        btn_excluir1.setRendered(false);
        btnAlterar.setRendered(false);
    }

    public void inicializarCampos() {
        //Inicialização de Campos
        this.setarCampos(true);
        botaoOpcaoSubCategoria.clear();
        botaoOpcaoMarca.clear();
        botaoOpcaoCategoria.clear();
        btnAlterar.setRendered(false);
        btn_excluir.setRendered(false);        
        botaoTipoBusca.clear();
        botaoTipoBusca.add(new SelectItem(1, "Descricao"));
        botaoTipoBusca.add(new SelectItem(2, "Todos"));
        campoCodigo.setReadonly(true);
        panelPopup.setRendered(false);        
        btnAlterar.setRendered(false);
        btn_excluir.setRendered(false);        
        painelAbasProduto.setSelectedIndex(0);
        dataTable1Model.setWrappedData(null);
        this.InicializaCampos(1);
        this.InicializaCampos(2);
        this.InicializaCampos(3);
        this.controlaPaginacao(0);
        btnConfirmarAlteracao.setRendered(false);
    }

     //Branco - Campos
   public void campoBranco(){
       ValidaCamposObrigatorios valida = new ValidaCamposObrigatorios();
       valida.limpaCores(campoDescricaoProduto);
       valida.limpaCores(campoUnidade);
       valida.limpaCores(campoQuantidadeMinima);
       valida.limpaCores(campoQuantidadeEstoque);
       valida.limpaCores(campoPrecoVenda);


   }
    public void tx_opCancelarAba_action() {
        painelAbasProduto.setSelectedIndex(0);
        this.setarCampos(true);
        this.limparCampos();
        this.campoBranco();
    }

    public String link_AbaAnterior01_action() {
        painelAbasProduto.setSelectedIndex(0);
        return null;
    }

    public void tipoBusca_processValueChange(ValueChangeEvent vce) {
        if(Integer.parseInt(tipoBusca.getValue().toString())==2){
            campoABuscar.setReadonly(true);
            campoABuscar.resetValue();
        }
        else
            campoABuscar.setReadonly(false);
    }

   

    //Action-Voltar
    public String btn_voltar_action() {
        controlaSaida = 1;
        controlaPopup(true,"Deseja Sair ?",true,true,"Sim","Não");
        return null;
    }

    public void campoPrecoVenda_processValueChange(ValueChangeEvent vce) {
        ValidaCamposObrigatorios valida = new ValidaCamposObrigatorios();
        valida.verificaCampoVazio(campoPrecoVenda);
    }

     public String tabelaResultadoBusca_firstPageAction() {
        {
            dataTable1Model.setWrappedData(BuscarProduto.getPaginacaoBusca().firstPage());
            tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
            tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
            if (BuscarProduto.getPaginacaoBusca().getTotalPaginas() > 1) {
                tabelaResultadoBuscaFooterNextButton.setDisabled(false);
                tabelaResultadoBuscaFooterLastButton.setDisabled(false);
      }
      return null;
   }
  }

    public String tabelaResultadoBusca_previousPageAction() {
        {
           dataTable1Model.setWrappedData(BuscarProduto.getPaginacaoBusca().previousPage());
      if (BuscarProduto.getPaginacaoBusca().getNumeroDaPagina() == 1) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
         tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
      }
      if (BuscarProduto.getPaginacaoBusca().getTotalPaginas() > 1) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
      }
      if (BuscarProduto.getPaginacaoBusca().getNumeroDaPagina() >= 2) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      return null;
   }
    }

    public String tabelaResultadoBusca_nextPageAction() {
       dataTable1Model.setWrappedData(BuscarProduto.getPaginacaoBusca().nextPage());
      tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
      if (BuscarProduto.getPaginacaoBusca().getTotalPaginas() == BuscarProduto.getPaginacaoBusca().getNumeroDaPagina()) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterLastButton.setDisabled(true);
      }
      if (BuscarProduto.getPaginacaoBusca().getNumeroDaPagina() >= 2) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      return null;
   }

    public String tabelaResultadoBusca_lastPageAction() {
       dataTable1Model.setWrappedData(BuscarProduto.getPaginacaoBusca().lastPage());
      if (BuscarProduto.getPaginacaoBusca().getTotalPaginas() == BuscarProduto.getPaginacaoBusca().getNumeroDaPagina()) {
         tabelaResultadoBuscaFooterLastButton.setDisabled(true);
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterPreviousButton.setDisabled(false);
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      if (BuscarProduto.getPaginacaoBusca().getNumeroDaPagina() >= 2) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(false);
      }
      return null;
   }

    public void controlaPaginacao(int controlePaginas) {
      if (controlePaginas <= 10) {
         tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
         tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
         tabelaResultadoBuscaFooterNextButton.setDisabled(true);
         tabelaResultadoBuscaFooterLastButton.setDisabled(true);
      }
      if (controlePaginas > 10) {
         tabelaResultadoBuscaFooterNextButton.setDisabled(false);
         tabelaResultadoBuscaFooterLastButton.setDisabled(false);
         tabelaResultadoBuscaFooterFirstButton.setDisabled(true);
         tabelaResultadoBuscaFooterPreviousButton.setDisabled(true);
      }
   }


   



 
}